]> dgit.raspbian.org Git - gnome-shell.git/commitdiff
bluetooth: Enforce a PIN length of 6 digits
authorFlorian Müllner <fmuellner@gnome.org>
Thu, 17 May 2012 19:09:56 +0000 (21:09 +0200)
committerFlorian Müllner <fmuellner@gnome.org>
Fri, 18 May 2012 15:41:19 +0000 (17:41 +0200)
Bluetooth PINs are required to have 6 digits, so enforce that
condition by making the PIN request notification's confirm
button insensitive unless the entered PIN has the correct length.

https://bugzilla.gnome.org/show_bug.cgi?id=651251

js/ui/status/bluetooth.js

index b9bba103689bfb2fcf78b603ea70cfd9e683731f..2d3b9b84b2d923cf6d29272cf212819c8a30cb03 100644 (file)
@@ -416,7 +416,8 @@ const PinNotification = new Lang.Class({
         this._entry.connect('key-release-event', Lang.bind(this, function(entry, event) {
             let key = event.get_key_symbol();
             if (key == Clutter.KEY_Return) {
-                this.emit('action-invoked', 'ok');
+                if (this._canActivateOkButton())
+                    this.emit('action-invoked', 'ok');
                 return true;
             } else if (key == Clutter.KEY_Escape) {
                 this.emit('action-invoked', 'cancel');
@@ -429,6 +430,12 @@ const PinNotification = new Lang.Class({
         this.addButton('ok', _("OK"));
         this.addButton('cancel', _("Cancel"));
 
+        this.setButtonSensitive('ok', this._canActivateOkButton());
+        this._entry.clutter_text.connect('text-changed', Lang.bind(this,
+            function() {
+                this.setButtonSensitive('ok', this._canActivateOkButton());
+            }));
+
         this.connect('action-invoked', Lang.bind(this, function(self, action) {
             if (action == 'ok') {
                 if (this._numeric) {
@@ -451,6 +458,11 @@ const PinNotification = new Lang.Class({
         }));
     },
 
+    _canActivateOkButton: function() {
+        // PINs have a fixed length of 6
+        return this._entry.clutter_text.text.length == 6;
+    },
+
     grabFocus: function(lockTray) {
         this.parent(lockTray);
         global.stage.set_key_focus(this._entry);